package com.scc.service;

import com.scc.pojo.*;

import java.time.LocalDate;
import java.util.List;

public interface UserService {
    //员工登录操作
    Emp login(Emp emp);

    //员工登录成功后根据账号获取头像的信息
    Emp getEmpImageByAccount(String account);

    //修改员工表的图片路径
    void modifyEmpImage(String url, String account);

    //员工查询或者获取自己的考勤信息
    PageBean getEmpAttendanceMsgByAccount(Integer page, Integer pageSize, String account, Integer empAttendanceStatus, LocalDate startDate, LocalDate endDate);

    //修改员工的考勤状态
    void modifyEmpAttendanceStatus(Attendance attendance);

    //员工请假提交申请表单(添加操作)
    void empApplyLeave(Leave leave);

    //员工请假信息表的获取
    PageBean getEmpApplyLeave(Integer page, Integer pageSize, String account, Integer approveStatus, String leaveType, LocalDate startDate, LocalDate endDate);

    //员工修改个人信息
    void modifyEmpMegByAccount(Emp emp, Integer id);

    //员工离职申请
    void empResignApply(Resign emp);

    //员工离职申请表信息的获取或者查询
    PageBean getEmpResignMsgByAccount(Integer page, Integer pageSize, String account, Integer approveStatus, LocalDate startDate, LocalDate endDate);

    //员工获取或查询培训活动信息
    PageBean getTrainingActivityMsg(Integer page, Integer pageSize, String account, String trainingName, Integer activityStatus, LocalDate start, LocalDate end);

    //员工培训活动的报名操作
    void empRegistrationActivity(String empTrainingActivity);

    //获取员工培训活动表该员工的信息根据id
    EmpTrainingActivity getEmpTrainingActivityMsg(Integer id, String account, String trainingName);

    //对员工活动报名表的删除根据id,账号
    void empDeleteTrainingActivityMsg(Integer id, String account);

    //员工修改密码
    void modifyPassword(Emp emp);

    //员工获取或者查找团建活动信息表
    PageBean getTeamBuildingActivities(Integer page, Integer pageSize, String teamBuildingName, Integer activityStatus, LocalDate start, LocalDate end, String account);

    //员工报名团建活动
    void empRegistrationTeamBuildingAct(String teamBuildingActivity);

    //获取团建活动的详细对象更具账号id
    EmpTeamBuildingActivityRegistration empTeamBuildingActivityMsg(Integer id, String account);

    //员工取消团建活动的报名操作
    void empDeleteTeamBuildingActivity(Integer id, String account);

    //员工获取自己的工资信息
    PageBean getEmpSalaryByAccount(String account, Integer page, Integer pageSize, LocalDate startDate, LocalDate endDate);

    //员工登录下线之后，记录下线时间
    void insertEmpOnlineMsg(String empOnlineMsg);

    //员工根据账号查询好友
    List<Emp> searchFriendByAccount(String account);

    //员工申请好友添加
    void insertApplyFriendMsg(String applyFriendMsg);

    //员工查看自己的好友申请
    List<Emp> selectFriendApply(Integer id);

    //员工查询自己的好友申请
    List<Emp> selectApply(Integer id);

    //员工同意好友操作
    void insertFriendRelationShip(String applyMsg);

    //员工拒绝好友操作
    void refuseApply(String applyMsg);

    //员工获取自己的好友列表
    List<Emp> selectFriendMsg(Integer empId);

    //员工删除好友
    void deleteFriendListById(Integer applyId, Integer friendId);
}
